<?php namespace Common\Model;
use \Hdphp\Model\Model;
class Arc extends Model{
	protected $table="article";
		
//	自动检测
	protected $validate=array(
		array('title','required','标题必须填写',3,3),
		array('category_cid','required','分类必须选择',3,3),	
	);
	
//	自动完成添加
//	就是在表单提交的时候在你提交的时候在插入，在添加一些模板上没有出现的字段，来完善这个表
	protected $auto=array(
//		设置发布时间的字段
		array('sendtime','time','function',3,1),
//		设置更改的时间
		array('updatetime','time','function',3,2),
//		设置那个用户的uid
		array('user_uid','uid','method',3,1),
//		设置一个上传缩略图
		array('thumb','thumb','method',3,3)	
	);
//	声明uid方方法
	public function uid(){
	    return $_SESSION['uid'];
	}
//	声明thumb的方法
	public function thumb(){
//	   判断是不是有上传,通过全局数组$_IFLES；如下素组就是，其中通过键名位error来判断是不是有上窜
//  array (size=1)
//     'thumb' => 
//      array (size=5)
//    'name' => string '' (length=0)
//    'type' => string '' (length=0)
//    'tmp_name' => string '' (length=0)
//    'error' => int 4
//    'size' => int 0
		if(isset($_FILES['thumb'])&&$_FILES['thumb']['error']!=4){
//			当键名位error的键值不为4时说明有上传(限制上传的类型，和上传文件的大小)
			$files=Upload::type('jpg,png,gif')->size(2000000000)->make();	
//			p($files);	
			if($files){
//			处理缩略图的文件名
				$newpath=str_replace('.'.$files[0]['ext'], '_thumb.'.$files[0]['ext'], $files[0]['path']);
//			缩略，返回缩略的路径	(固定用法)
				$thumbpath=Image::thumb($files[0]['path'],$newpath,200,200,2);
//			返回，缩略的路径
				return $thumbpath;
			}
			
		}
//		判断有没有隐藏域
			if($thumb=Q('post.thumb')){
				return $thumb;
			}
//		如果用户没有上传的话就返回空字符串
		return '';
	   
	}
	
	
	
//	自定义store模块方法	
	public function store(){
//	 出发自动验证

//	1.先验证article表师是否符合
	if(!$this->create()) return false;
//	判断上传有没有错误,将错误压入到error里面
	if($error=Upload::geterror()){
		$this->error=$error;
		return false;
	}		
//	2.验证artic_data是否符合	
//		实例化Arctic——data表的模型
		$arcdata=new \Common\Model\ArcData;
		if(!$arcdata->create()){
//			把从arcData获得的错误压入到error中
			$this->error=$arcdata->geterror();
			return false;
		}
//	p($_POST);
	
	
//	2.将数据添加到对应的表中	
//		添加article表 同事返回添加的文章主键id
		$aid=$this->add();
		
//		将框架自带的的data压入要和article关联的article_aid,实现关联
		$arcdata->data['article_aid']=$aid;
//		然后添加到arcdata离去
		$arcdata->add();
//		添加到arctag表里
		$arctag=new \Common\Model\ArcTag;
		foreach (Q('post.tid',array()) as $v) {
//			声明一个数组放在add的方法里的	
			$data=array(
				'article_aid'=>$aid,
				'tag_tid'=>$v,			
			);
//			添加一条进入到article_tag离去
			$arctag->add($data);
		}
				
		return true;
	}
	
//	自定义模型修改方法
		public function edit(){
//		    判断是不是符合
		//1.验证Arctic
			if(!$this->create()) return false;
		//	上传是不是有错误
			if($error=Upload::geterror()){
				$this->error=$error;
				return false;
			}
		//.判断article_data验证是否正确
			$arcdata=new \Common\Model\ArcData;	
			if(!$arcdata->create()){
//				将arcdata的错误压入到error里面
				$this->error=$arcdata->geterror();
				return false;
			}
			
		//2.修改对应的的	
		
		if(isset($_FILES['thumb'])&&$_FILES['thumb']['error']==4){
			$aid=Q('get.aid',0,'intval');
			$data=$this->where("aid=$aid")->pluck('thumb');
			unlink($data);
			$str=strrchr($data, '.');
			$data=str_replace('_thumb'.$str, $str, $data);
			unlink($data);
		}				
			//article表，（隐藏域有主键aid）
			$this->save();
			//修改article_data表
			//获得主键aid
			$aid=Q('post.aid',0,'intval');
			//修改article_aid=$aid的值
				$model=new \Common\Model\ArcData;	
				$model->where("article_aid={$aid}")->save();
			
//			修改标签中间表
//				先把原来对应的aid的旧数据都删除掉
				$model=new \Common\Model\ArcTag;
				$model->where("article_aid={$aid}")->delete();
//			接着把提交上来的新数据插入到对应的aid下面	
				foreach (Q('post.tid',array()) as $v) {
//					组合路径
					$data=array(
					'article_aid'=>$aid,
					'tag_tid'=>$v
					);
					//添加
					$model->add($data);
				}
			
			
		 return true;
		}
		
}
?>	